import { app, BrowserWindow, Menu } from "electron";
import { CustomScheme } from './CustomScheme'
import { CommonWindowEvent } from "./CommonWindowEvent";
process.env.ELECTRON_DISABLE_SECURITY_WARNINGS = "true"; // 用于设置渲染进程开发者调试工具的警告，这里设置为 true 就不会再显示任何警告了
let mainWindow: BrowserWindow;
app.on('browser-window-created',(e,win) => {
  // 每当有一个窗口被创建成功后，这个事件就会被触发，主窗口和使用window.open创建的子窗口都一样，
  CommonWindowEvent.regWinEvent(win)
})
app.whenReady().then(() => {
  let config = {
    frame: false, // 去掉顶部编辑栏
    width: 1400,
    height: 900,
    maxWidth: 1800,
    minWidth: 1200,
    maxHeight: 1000,
    minHeight: 900,
    show: false, // 默认影藏窗口 直到首页逻辑加载完毕(browser-window-created)后再进行展示 当然也可以通过修改用户电脑配置实现「Add-MpPreference -ExclusionProcess "C:\Users\qihoo\AppData\Roaming\Electron Fiddle\electron-bin\19.0.4\electron.exe"」
    webPreferences: {
      nodeIntegration: true, // 把 Node.js 环境集成到渲染进程中
      webSecurity: false,
      allowRunningInsecureContent: true,
      contextIsolation: false, // 在同一个 JavaScript 上下文中使用 Electron API
      webviewTag: true,
      spellcheck: false,
      disableHtmlFullscreenWindowResize: true,
    },
  };
  // 设置左上角「菜单模版结构」
  // Menu.setApplicationMenu(Menu.buildFromTemplate([{
  //   role: 'help',
  //   submenu: [
  //     {
  //       label: 'Learn More',
  //       click: async () => {
  //         const { shell } = require('electron')
  //         await shell.openExternal('https://electronjs.org')
  //       }
  //     }
  //   ]
  // }]))
  mainWindow = new BrowserWindow(config);
  mainWindow.webContents.openDevTools({ mode: "right" });

  // 这样当存在指定的命令行参数时，我们就认为是开发环境，使用命令行参数加载页面，当不存在命令行参数时，我们就认为是生产环境，通过app:// scheme 加载页面。
  if (process.argv[2]) {
    mainWindow.loadURL(process.argv[2]);
  } else {
    CustomScheme.registerScheme();
    mainWindow.loadURL(`app://index.html`);
  }

  // 注册主进程消息处理模块
  CommonWindowEvent.listen()
});